cmake_minimum_required(VERSION 3.5.1)

set(MODULE_NAME "glib.slist")

# find_package 命令还可以用来加载 cmake 的功能模块
# 并不是所有的库都直接支持 cmake 查找的，但大部分都支持了 pkg-config 这个标准，
# 因此 cmake 提供了间接加载库的模块：FindPkgConfig， 下面这行命令表示加载 FindPkgConfig 模块，
# 这个 cmake 模块提供了额外的基于 “pkg-config” 加载库的能力
# 执行下面的命令后后会设置如下变量，不过一般用不到：
# PKG_CONFIG_FOUND            pkg-config 可执行文件是否找到了
# PKG_CONFIG_EXECUTABLE       pkg-config 可执行文件的路径
# PKG_CONFIG_VERSION_STRING   pkg-config 的版本信息
find_package(PkgConfig REQUIRED)

# 加载 FindPkgConfig 模块后就可以使用 pkg_check_modules 命令加载需要的库
# pkg_check_modules 命令是由 FindPkgConfig 模块提供的，因此要使用这个命令必须先加载 FindPkgConfig 模块。
# 执行 pkg_check_modules 命令加载库也会设置一些类似执行 find_package 加载库后设置的变量：
# GLIB2_FOUND
# GLIB2_INCLUDE_DIRS
# GLIB2_LIBRARIES
# 还有有另外的一些变量以及更灵活的用法，比如一次性查找多个库，这些请自行查找 cmake 文档学习。
pkg_check_modules(GLIB2 REQUIRED glib-2.0)

# 例如使用pkg-config寻找某个库:
# zinface@zinface-PC:~$ pkg-config --list-all | grep glib
# libpulse-mainloop-glib              libpulse-mainloop-glib - PulseAudio GLib 2.0 Main Loop Wrapper
# json-glib-1.0                       JSON-GLib - JSON Parser for GLib.
# glib-2.0                            GLib - C Utility Library
# gio-unix-2.0                        GIO unix specific APIs - unix specific headers for glib I/O library
# dbus-glib-1                         dbus-glib - GLib integration for the free desktop message bus
# gio-2.0                             GIO - glib I/O library



add_executable(${MODULE_NAME} main.c)

target_include_directories(${MODULE_NAME} PUBLIC
    ${GLIB2_INCLUDE_DIRS}
)
target_link_libraries(${MODULE_NAME} 
    ${GLIB2_LIBRARIES}
)